package com.zhuang.chapter04.innerclass;

import com.zhuang.chapter04.innerclass.Outer.Inner;

public class Main {

	public static void main(String[] args) {
		// 内部类
		test01();

		// 局部内部类
		test02();

		// 匿名内部类
		test03();
		
		// 静态内部类
		test04();
	}

	public static void test01() {
		Outer outer = new Outer();
		Inner inner = outer.new Inner();
		// 内部类访问外部类的成员变量和成员方法test01
		inner.show01();
		// 内部类访问外部类的成员变量和成员方法show02
		outer.test02();
	}

	public static void test02() {
		Outer2 outer2 = new Outer2();
		// 通过外部类对象调用创建的局部内部类方法
		outer2.test01();
		outer2.test02();
	}

	public static void test03() {
		animalShout(new Animal() {
			@Override
			public void shout() {
				// TODO Auto-generated method stub
				System.out.println("我是小猫喵喵喵");
			}
		});
	}
	
	public static void test04() {
		Outer3.Inner oi = new Outer3.Inner();
		System.out.println(oi.a);
		System.out.println(oi.b);
	}

	public static void animalShout(Animal animal) {
		animal.shout();
	}
}
